The proliferation of computers and the advent of the Internet and the maturing of the World Wide Web (“web”) have significantly increased the use of distributed application programs. Examples of distributed application programs include collaboration programs, chat room programs, instant messaging programs, conferencing programs, gaming programs, and the like. Each of these application programs enable multiple, geographically distributed computer users to interactively exchange information in real time.
One prevalent method of creating the distributed application programs is to use object-oriented programming. Object-oriented programming is a method of creating computer programs by combining or linking reusable components, called “objects,” to create applications. An object is a programming unit containing both data and instructions for performing operations on that data. In object-oriented programming, the operations are referred to as “methods.”
Object-oriented application programs use objects to define their data and the methods that operate on the data. Typically, two objects communicate with each other via messages, which include a protocol that defines the method of communication. In distributed application programs, these objects can reside, for example, on different computing systems and across networks, within different application processes running on the same computing system, within different components/subcomponents running within the same process, different processes, or a different process on a different computing system. Distributed computing is frequently based on the client-server paradigm, and in client-server terminology, the requesting object is referred to as the client object and the servicing object is referred to as the server object.
In a distributed configuration where different subsystems—e.g., an instance of a distributed application program on a client computing system and an instance of the distributed application program on a server computing system—use remote objects or distributed objects (DOs) as the mechanism for communication, the DOs are connected or coupled in pairs. For example, a DO in one subsystem—i.e., a client subsystem—is coupled to a corresponding DO in the other subsystem—i.e., a server subsystem—through a separate logical channel. Where we have multiple DOs, each of the DOs in the client needs to be coupled to its corresponding DO in the server.
Currently, when client applications attempt to establish a connection with a server application, only client applications that have the same or compatible application version as the server application are able to successfully establish the connection. If a client application has a different or incompatible application version than the server application being connected to, the connection between the applications will be terminated as soon as either the client or the server tries to pass a message to the other application. Since applications are regularly updated to provide additional or improved features, it is inevitable that client applications and server applications will be of different versions. Moreover, there may be instances where it may be desirable to continue to support older versions of the client application and/or the server application.
It would be desirable to have a technique that would allow the different versions of distributed applications to negotiate and establish a connection.